package com.google.code.swingonfire.component.calendar;

import java.awt.Color;
import java.awt.Font;
import java.util.Calendar;
import java.util.Locale;

public interface JCalendarModel
{

    JCalendarType getType();

    void setType(JCalendarType view);

    void parentType();

    Calendar getSelected();

    void setSelected(Calendar calendar);

    Calendar getDisplayed();

    void setDisplayed(Calendar calendar);

    void displayNext();

    void displayPrevious();

    Locale getLocale();

    void setLocale(Locale locale);

    void addCalendarModelListener(JCalendarModelListener listener);

    void removeCalendarModelListener(JCalendarModelListener listener);

    String getTypeBasedName(Calendar calendar);

    String getMonthName(Calendar calendar);

    Font getMonthFont(Calendar calendar, Font defaultFont);

    Color getMonthForeground(Calendar calendar, Color defaultColor);

    Color getMonthBackground(Calendar calendar);

    String getWeekOfYearName(Calendar calendar);

    Font getWeekOfYearFont(Calendar calendar, Font defaultFont);

    Color getWeekOfYearForeground(Calendar calendar, Color defaultColor);

    Color getWeekOfYearBackground(Calendar calendar);

    int getFirstDayOfWeek();

    String getDayOfWeekName(int dayOfWeek);

    Font getDayOfWeekFont(int dayOfWeek, Font defaultFont);

    Color getDayOfWeekForeground(int dayOfWeek, Color defaultColor);

    Color getDayOfWeekBackground(int dayOfWeek);

    String getDayName(Calendar calendar, boolean inScope);

    boolean isDaySelectable(Calendar calendar, boolean inScope);

    Font getDayFont(Calendar calendar, boolean inScope, Font defaultFont);

    Color getDayForeground(Calendar calendar, boolean inScope, Color defaultColor);

    Color getDayBackground(Calendar calendar, boolean inScope);

}
